/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bean;

import Dao.CategoriaDao;
import Dao.LivroDao;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.component.UIParameter;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.persistence.RollbackException;
import pojo.Categoria;
import pojo.Livro;

/**
 *
 * @author jonatan
 */
@ManagedBean(name="beanLivro")
@SessionScoped 
public class LivroBean {
    
    private LivroDao livrodao = new LivroDao();
    private Livro livro = new Livro();
    private List<Livro> listalivro = new ArrayList<Livro>();
    private Livro excluido;
    private Long idCategoria;

    public Long getIdCategoria() {
        return idCategoria;
    }

    public void setIdCategoria(Long idCategoria) {
        this.idCategoria = idCategoria;
    }

    public LivroBean() {
    }

    public LivroDao getLivrodao() {
        return livrodao;
    }

    public Livro getLivro() {
        return livro;
    }

    public List<Livro> getListalivro() {
        return listalivro;
    }

    public Livro getExcluido() {
        return excluido;
    }

    public void setLivrodao(LivroDao livrodao) {
        this.livrodao = livrodao;
    }

    public void setLivro(Livro livro) {
        this.livro = livro;
    }

    public void setListalivro(List<Livro> listalivro) {
        this.listalivro = listalivro;
    }

    public void setExcluido(Livro excluido) {
        this.excluido = excluido;
    }
    
    
    public String salvar() { 
        CategoriaDao catdao = new CategoriaDao();
        livro.setCategorias(catdao.Buscar(idCategoria));
        livrodao.Gravar(livro);
        livro = new Livro();
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "CONFIRMAÇÃO",
                "Cadastrado realizado com sucesso!"));
        return "CadastroLivro.xhtml";
    }
    
    public List<Livro> listalivro() {
        return listalivro = livrodao.Listar(Livro.class);
    }
    
    public String removerlivro(Livro obj) {
        try {
            livrodao.Remover(obj);
            cancelar();
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,
                    "CONFIRMAÇÃO", "Livro removido com sucesso!"));
        } catch (RollbackException e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,
                    "ATENÇÃO", "Livro esta em uso, não pode ser removido."));
        }
        return "CadastroLivro.xhtml";
    }
    public void parametroRemover(ActionEvent event) {
        UIComponent link = event.getComponent();
        UIParameter param = (UIParameter) link.findComponent("idParaRemover");
        excluido = (Livro) param.getValue();
    }
    
    public void remover() {
        removerlivro(excluido);
        excluido = null;
    }

    public void alterar(Livro obj) {
        obj = livrodao .Buscar(obj.getId());
        this.livro = obj;
    }

    public String cancelar() {
        livro = new Livro();
        return "CadastroLivro.xhtml";
    }

    public String paginaLivro() {
        return "CadastroLivro.xhtml";
    }
}
